package com.ukadas.eduko.modelo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name="usuarios")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY) 
	@Column(name="id_usuario")
	private int idUsuario; //Id de notre application
	
	@Column(unique=true)
	private String usuario;
	
	@Column(name="palabra_magica")
	private String palabraMagica; 
	
	@OneToOne
	@JoinColumn(name="id_perfil", referencedColumnName="id_perfil")
	private Perfil perfil; 
	
	private boolean borrado;
	private boolean habilitada=false;
	private boolean activada=false;
	private boolean cambia_clave=false;
	private Date alta;
	private Date baja;
	
	@Column(name="ob_baja")
	private String obAlta;
	
	@Column(name="ob_alta")
	private String obBaja;
	
	@OneToOne
	@JoinColumn(name="id_mail", referencedColumnName = "id_mail")
	private Mail mail;
	
	@OneToOne
	@JoinColumn(name="id_persona", referencedColumnName="id_persona")
	private Persona persona;
	
	private String idioma;
	
	public Usuario() {
		super();
	}

	
	
	Usuario(int idUsuario, String usuario, String palabraMagica, Perfil perfil,
			boolean borrado, boolean habilitada, boolean activada,
			boolean cambia_clave, Date alta, Date baja, String obAlta,
			String obBaja, Mail mail, Persona persona, String idioma) {
		super();
		this.idUsuario = idUsuario;
		this.usuario = usuario;
		this.palabraMagica = palabraMagica;
		this.perfil = perfil;
		this.borrado = borrado;
		this.habilitada = habilitada;
		this.activada = activada;
		this.cambia_clave = cambia_clave;
		this.alta = alta;
		this.baja = baja;
		this.obAlta = obAlta;
		this.obBaja = obBaja;
		this.mail = mail;
		this.persona = persona;
		this.idioma = idioma;
	}



	public int getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getUsaurio() {
		return usuario;
	}

	public void setUsaurio(String usuario) {
		this.usuario = usuario;
	}

	public String getPalabraMagica() {
		return palabraMagica;
	}

	public void setPalabraMagica(String palabraMagica) {
		this.palabraMagica = palabraMagica;
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public boolean isBorrado() {
		return borrado;
	}

	public void setBorrado(boolean borrado) {
		this.borrado = borrado;
	}

	public boolean isHabilitada() {
		return habilitada;
	}

	public void setHabilitada(boolean habilitada) {
		this.habilitada = habilitada;
	}

	public boolean isActivada() {
		return activada;
	}

	public void setActivada(boolean activada) {
		this.activada = activada;
	}

	public Mail getMail() {
		return mail;
	}

	public void setMail(Mail mail) {
		this.mail = mail;
	}

	public String getIdioma() {
		return idioma;
	}

	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}



	public String getUsuario() {
		return usuario;
	}



	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}


	public Persona getPersona() {
		return persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}



	public boolean isCambia_clave() {
		return cambia_clave;
	}



	public void setCambia_clave(boolean cambia_clave) {
		this.cambia_clave = cambia_clave;
	}



	public Date getAlta() {
		return alta;
	}



	public void setAlta(Date alta) {
		this.alta = alta;
	}



	public Date getBaja() {
		return baja;
	}



	public void setBaja(Date baja) {
		this.baja = baja;
	}



	public String getObAlta() {
		return obAlta;
	}



	public void setObAlta(String obAlta) {
		this.obAlta = obAlta;
	}



	public String getObBaja() {
		return obBaja;
	}



	public void setObBaja(String obBaja) {
		this.obBaja = obBaja;
	}



	@Override
	public String toString() {
		return "Usuario [idUsuario=" + idUsuario + ", usuario=" + usuario
				+ ", palabraMagica=" + palabraMagica + ", perfil=" + perfil
				+ ", borrado=" + borrado + ", habilitada=" + habilitada
				+ ", activada=" + activada + ", cambia_clave=" + cambia_clave
				+ ", alta=" + alta + ", baja=" + baja + ", obAlta=" + obAlta
				+ ", obBaja=" + obBaja + ", mail=" + mail + ", persona="
				+ persona + ", idioma=" + idioma + "]";
	}

	
	
	
}
